home *** CD-ROM | disk | FTP | other *** search
/ SGI Developer Toolbox 6.1 / SGI Developer Toolbox 6.1 - Disc 4.iso / documents / RFC / rfc981.txt < prev    next >
Text File  |  1994-08-01  |  58KB  |  1,255 lines

  1.  
  2.  
  3. Network Working Group                                        D. L. Mills
  4. Request for Comments: 981                               M/A-COM Linkabit
  5.                                                               March 1986
  6.  
  7.             An Experimental Multiple-Path Routing Algorithm
  8.  
  9.  
  10. Status of This Memo
  11.  
  12.    This RFC describes an experimental, multiple-path routing algorithm
  13.    designed for a packet-radio broadcast channel and discusses the
  14.    design and testing of a prototype implementation.  It is presented as
  15.    an example of a class of routing algorithms and data-base management
  16.    techniques that may find wider application in the Internet community.
  17.    Of particular interest may be the mechanisms to compute, select and
  18.    rank a potentially large number of speculative routes with respect to
  19.    the limited cumputational resources available.  Discussion and
  20.    suggestions for improvements are welcomed.  Distribution of this memo
  21.    is unlimited.
  22.  
  23. Abstract
  24.  
  25.    This document introduces wiretap algorithms, which are a class of
  26.    routing algorithms that compute quasi-optimum routes for stations
  27.    sharing a broadcast channel, but with some stations hidden from
  28.    others. The wiretapper observes the paths (source routes) used by
  29.    other stations sending traffic on the channel and, using a heuristic
  30.    set of factors and weights, constructs speculative paths for its own
  31.    traffic.  A prototype algorithm, called here the Wiretap Algorithm,
  32.    has been designed for the AX.25 packet-radio channel.  Its design is
  33.    similar in many respects to the shortest-path-first (spf) algorithm
  34.    used in the ARPANET and elsewhere, and is in fact a variation in the
  35.    class of algorithms, including the Viterbi Algorithm, that construct
  36.    optimum paths on a graph according to a distance computed as a
  37.    weighted sum of factors assigned to the nodes and edges.
  38.  
  39.    The Wiretap Algorithm differs from conventional algorithms in that it
  40.    computes not only the primary route (a minimum-distance path), but
  41.    also additional paths ordered by distance, which serve as alternate
  42.    routes should the primary route fail.  This feature is also useful
  43.    for the discovery of new paths not previously observed on the
  44.    channel.
  45.  
  46.    Since the amateur AX.25 packet-radio channel is very active in the
  47.    Washington, DC, area and carries a good deal of traffic under
  48.    punishing conditions, it was considered a sufficiently heroic
  49.    environment for a convincing demonstration of the prototype
  50.    algorithm.  It was implemented as part of an IP/TCP driver for the
  51.    LSI-11 processor running the "fuzzball" operating system.  The driver
  52.    is connected via serial line to a 6809-based TAPR-1 processor running
  53.    the WA8DED firmware, which controls the radio equipmnet in both
  54.  
  55.  
  56. Mills                                                           [Page 1]
  57.  
  58.  
  59.  
  60. RFC 981                                                       March 1986
  61. An Experimental Multiple-Path Routing Algorithm
  62.  
  63.  
  64.    virtual-circuit and datagram modes. The prototype implementation
  65.    provides primary and alternate routes, can route around congested
  66.    areas and can change routes during a connection. This document
  67.    describes the design, implementation and initial testing of the
  68.    algorithm.
  69.  
  70. 1.  Introduction
  71.  
  72.    This document describes the design, implementation and initial
  73.    testing of the Wiretap Algorithm, a dynamic routing algorithm for the
  74.    AX.25 packet-radio channel [4].  The AX.25 channel operates in CSMA
  75.    contention mode at VHF frequencies using AFSK/FM modulation at 1200
  76.    bps. The AX.25 protocol itself is similar to X.25 link-layer protocol
  77.    LAPB, but with an extended frame header consisting of a string of
  78.    radio callsigns representing a path, usually selected by the
  79.    operator, between two end stations, possibly via one or more
  80.    intermediate packet repeaters or digipeaters.  Most stations can
  81.    operate simultaneously as intermediate systems digipeaters) and as
  82.    end systems with respect to the ISO model.
  83.  
  84.    Wiretap uses passive monitoring of frames transmitted on the channel
  85.    in order to build a dynamic data base which can be used to determine
  86.    optimum routes.  The algorithm operates in real time and generates a
  87.    set of paths ordered by increasing total distance, as determined by a
  88.    shortest-path-first procedure similar to that used now in the ARPANET
  89.    and planned for use in the new Internet gateway system [2].  The
  90.    implementation provides optimum routes (with respect to the factors
  91.    and weights selected) at initial-connection time for virtual
  92.    circuits, as well as for each datagram transmission.  This document
  93.    is an initial status report and overview of the prototype
  94.    implementation for the LSI-11 processor running the "fuzzball"
  95.    operating system.
  96.  
  97.    The principal advantage in the use of routing algorithms like Wiretap
  98.    is that digipeater paths can be avoided when direct paths are
  99.    available, with digipeaters used only when necessary and also to
  100.    discover hidden stations.  In the present exploratory stage of
  101.    evolution, the scope of Wiretap has been intentionally restricted to
  102.    passive monitoring.  In a later stage the scope may be extended to
  103.    include the use of active probes to discover hidden stations and the
  104.    use of clustering techniques to manage the distribution of large
  105.    quantities of routing information.
  106.  
  107.    The AX.25 channel interface is the 6809-based TAPR-1 processor
  108.    running the WA8DED firmware (version 1.0) and connected to the LSI-11
  109.    by a 4800-bps serial line.  The WA8DED firmware produces as an option
  110.    a monitor report for each received frame of a selected type,
  111.  
  112.  
  113. Mills                                                           [Page 2]
  114.  
  115.  
  116.  
  117. RFC 981                                                       March 1986
  118. An Experimental Multiple-Path Routing Algorithm
  119.  
  120.  
  121.    including U, I and S frames.  Wiretap processes each of these to
  122.    extract routing information and (optionally) saves them in the system
  123.    log file. Following is a typical report:
  124.  
  125.       fm KS3Q to W4CQI via WB4JFI-5* WB4APR-6 ctl I11 pid F0
  126.  
  127.    The originating station is KS3Q and the destination is W4CQI.  The
  128.    frame has been digipeated first by WB4JFI-5 and then WB4APR-6, is an
  129.    I frame (sequence numbers follow the I indicator) and has protocol
  130.    identifier F0 (hex).  The asterisk "*" indicates the report was
  131.    received from that station.  If no asterisk appears, the report was
  132.    received from the originator.
  133.  
  134. 2.  Design Principles
  135.  
  136.    A path is a concatenation of directed links originating at one
  137.    station, extending through one or more digipeaters and terminating at
  138.    another station.  Each link is characterized by a set of factors such
  139.    as cost, delay or throughput that can be computed or estimated.
  140.    Wiretap computes several intrinsic factors for each link and updates
  141.    the routing data base, consisting of node and link tables.  The
  142.    weighted sum of these factors for each link is the distance of that
  143.    link, while the sum of the distances for each link in the path is the
  144.    distance of that path.
  145.  
  146.    It is the intent of the Wiretap design that the distance of a link
  147.    reflect the a-priori probability that a packet will successfully
  148.    negotiate that link relative to the other choices possible at the
  149.    sending node.  Thus, the probability of a non-looping path is the
  150.    product of the probabilities of its links.  Following the technique
  151.    of Viterbi [1], it is convenient to represent distance as a
  152.    logarithmic transformation of probability, which then becomes a
  153.    metric.  However, in the following the underlying probabilities are
  154.    not considered directly, since the distances are estimated on a
  155.    heuristic basis.
  156.  
  157.    Wiretap incorporates an algorithm which constructs a set of paths,
  158.    ordered by distance, between given end stations according to the
  159.    factors and weights contained in the routing data base.  Such paths
  160.    can be considered optimum routes between these stations with respect
  161.    to the given assignment of factors and weights.  In the prototype
  162.    implementation one of the end stations must be the Wiretap station
  163.    itself;  however, in principle, the Wiretap station can generate
  164.    routes for other stations subject to the applicability of the
  165.    information in its data base.
  166.  
  167.    Note that Wiretap in effect constructs minimum-distance paths in the
  168.  
  169.  
  170. Mills                                                           [Page 3]
  171.  
  172.  
  173.  
  174. RFC 981                                                       March 1986
  175. An Experimental Multiple-Path Routing Algorithm
  176.  
  177.  
  178.    direction from the destination station to the Wiretap station and,
  179.    based on that information, then computes the optimum reciprocal
  180.    routes from the Wiretap station to the destination station.  The
  181.    expectation is that the destination station also runs its own routing
  182.    algorithm, which then computes its own optimum reciprocal routes
  183.    (i.e.  the optimum direct routes from the Wiretap station).  However,
  184.    the routing data bases at the two stations may diverge due to
  185.    congestion or hidden stations, so that the computed routes may not
  186.    coincide.
  187.  
  188.    In principle, Wiretap-computed routes can be fine-tuned using
  189.    information provided not only by its directly communicating stations
  190.    but others that may hear them as well.  The most interesting scenario
  191.    would be for all stations to exchange Wiretap information using a
  192.    suitable distributed protocol, but this is at the moment beyond the
  193.    scope of the prototype implementation.  Nevertheless, suboptimum but
  194.    useful paths can be obtained in the traditional and simple way with
  195.    one station using a Wiretap-computed route and the other its
  196.    reciprocal, as determined from the received frame header.  Thus,
  197.    Wiretap is compatible with existing channel procedures and protocols.
  198.  
  199. 3.  Implementation Overview
  200.  
  201.    The prototype Wiretap implementation for the LSI-11 includes two
  202.    routines, the wiretap routine, which extracts information from
  203.    received monitor headers and builds the routing data base, and the
  204.    routing routine, which calculates paths using the information in the
  205.    data base. The data base consists of three tables, the channel table,
  206.    node table and link table.  The channel table includes an entry for
  207.    each channel (virtual circuit) supported by the TAPR-1 processor
  208.    running the WA8DED firmware, five in the present configuration.  The
  209.    structure and use of this table are only incidental to the algorithm
  210.    and will not be discussed further.
  211.  
  212.    The node table includes an entry for each distinct callsign (which
  213.    may be a collective or beacon identifier) heard on the channel,
  214.    together with node-related routing information, the latest computed
  215.    route and other miscellaneous information.  The table is indexed by
  216.    node ID (NID), which is used in the computed route and in other
  217.    tables instead of the awkward callsign string.  The link table
  218.    contains an entry for each distinct (unordered) node pair observed in
  219.    a monitor header.  Each entry includes the from-NID and to-NID of the
  220.    first instance found, together with link-related routing information
  221.    and other miscellaneous information.  Both tables are dynamically
  222.    managed using a cache algorithm based on a weighted
  223.    least-recently-used replacement mechanism described later.
  224.  
  225.  
  226.  
  227. Mills                                                           [Page 4]
  228.  
  229.  
  230.  
  231. RFC 981                                                       March 1986
  232. An Experimental Multiple-Path Routing Algorithm
  233.  
  234.  
  235.    The example discussed in Appendix A includes candidate node and link
  236.    tables for illustration.  These tables were constructed in real time
  237.    by the prototype implementation from off-the-air monitor headers
  238.    collected over a typical 24-hour period.  Each node table entry
  239.    requires 26 bytes and each link table entry four bytes.  The maximum
  240.    size of the node table is presently 75 entries, while that of the
  241.    link table is 150 entries.  Once the cache algorithm has stabilized
  242.    for a day or two, it is normal to have about 60 entries in the node
  243.    table and 100 entries in the link table.
  244.  
  245.    The node table and link table together contain all the information
  246.    necessary to construct a network graph, as well as calculate paths on
  247.    that graph between any two end stations, not just those involving the
  248.    Wiretap station.  Note, however, that the Wiretap station does not in
  249.    general hear all other stations on the channel, so may choose
  250.    suboptimum routes.  However, in the Washington, DC, area most
  251.    stations use one of several digipeaters, which are in general heard
  252.    reliably by other stations in the area.  Thus, a Wiretap station can
  253.    eventually capture routes to almost all other stations using the
  254.    above tables and the routing algorithm described later.
  255.  
  256. 4.  The Wiretap Routine
  257.  
  258.    The wiretap routine is called to process each monitor header.  It
  259.    extracts each callsign from the header in turn and searches the node
  260.    table for corresponding NID, making a new entry and NID if not
  261.    already there.  The result is a string of NIDs, starting at the
  262.    originating station, extending through a maximum of eight digipeaters
  263.    and ending at the destination station.  For each pair of NIDs along
  264.    this string the link table is searched for either the direct link, as
  265.    indicated in the string, or its reciprocal;  that is, the direction
  266.    towards the originator.
  267.  
  268.    The operations that occur at this point can be illustrated by the
  269.    following diagram, which represents a monitor header with apparent
  270.    path from station 4 to station 6 via digipeaters 7, 2 and 9 in
  271.    sequence.  It happens the header was heard by the Wiretap station (0)
  272.    from station 2.
  273.  
  274.                    (4)     (7)     (2)     (9)     (6)
  275.               orig o------>o<=====>o------>o------>o dest
  276.                                    |
  277.                                    |
  278.                                    V
  279.                                   (0)
  280.                                 wiretap
  281.  
  282.  
  283.  
  284. Mills                                                           [Page 5]
  285.  
  286.  
  287.  
  288. RFC 981                                                       March 1986
  289. An Experimental Multiple-Path Routing Algorithm
  290.  
  291.  
  292.    Presumably, the fact that the header was heard from station 2
  293.    indicates the path from station 4 to station 2 and then to station 0
  294.    is viable, so that each link along this path can be marked "heard" in
  295.    that direction.  However, the viability of the path from station 2 to
  296.    station 6 can only be presumed, unless additional evidence is
  297.    available.  If in fact the header is from an AX.25 I or S frame (but
  298.    not a U frame), an AX.25 virtual circuit has apparently been
  299.    previously established between the end stations and the presumption
  300.    is strengthened.  In this case each link from 4 to 6 is marked
  301.    "synchronized" (but not the link from 2 to 0).
  302.  
  303.    Not all stations can both originate frames and digipeat them. Station
  304.    4 is observed to originate and station 7 to digipeat, but station 9
  305.    is only a presumptive digipeater and no evidence is available that
  306.    the remaining stations can originate frames.  Thus, the link from
  307.    station 4 to station 7 is marked "source" and from station 7 to
  308.    station 2 is marked "digipeated."
  309.  
  310.    Depending on the presence of congestion and hidden stations, it may
  311.    happen that the reciprocal path in the direction from station 6 to
  312.    station 4 has quite different link characteristics;  therefore, a
  313.    link can be recognized as heard in each direction independently.  In
  314.    the above diagram the link between 2 and 7 has been heard in both
  315.    directions and is marked "reciprocal".  However, there is only one
  316.    synchronized mark, which can be set in either direction.  If a
  317.    particular link is not marked either heard or synchronized, any
  318.    presumption on its viability to carry traffic is highly speculative
  319.    (the traffic is probably a beacon or "CQ").  If later marked
  320.    synchronized the presumption is strengthened and if later marked
  321.    heard in the reciprocal direction the presumption is confirmed.
  322.  
  323.    Experience shows that a successful routing algorithm for any
  324.    packet-radio channel must have provisions for congestion avoidance.
  325.    There are two straightforward ways to cope with this.  The first is a
  326.    static measure of node congestion based on the number of links in the
  327.    network graph incident at each node.  This number is computed by the
  328.    wiretap routine and stored in the node table as it adds entries to
  329.    the link table.
  330.  
  331.    The second, not yet implemented, is a dynamic measure of node
  332.    congestion which tallies the number of link references during the
  333.    most recent time interval (of specified length).  The current plan
  334.    was suggested by the reachability mechanism used in the ARPANET and
  335.    the Exterior Gateway Protocol [3].  An eight-bit shift register for
  336.    each node is shifted in the direction from high-order to low-order
  337.    bits, with zero-bits preceeding the high-order bit, at the rate of
  338.    one shift every ten seconds.  If during the preceeding ten-second
  339.  
  340.  
  341. Mills                                                           [Page 6]
  342.  
  343.  
  344.  
  345. RFC 981                                                       March 1986
  346. An Experimental Multiple-Path Routing Algorithm
  347.  
  348.  
  349.    period a header with a path involving that node is found, the
  350.    high-order bit of the register is set to one.  When a path is
  351.    calculated the number of one-bits in the register is totalled and
  352.    used as a measure of dynamic node congestion. Thus, the time interval
  353.    specified is 80 seconds, which is believed appropriate for the AX.25
  354.    channel dynamics.
  355.  
  356. 5.  Factor Computations and Weights
  357.  
  358.    The data items produced by the wiretap routine are processed to
  359.    produce a set of factors that can be used by the routing routine to
  360.    develop optimum routes.  In order to insure a stable and reliable
  361.    convergence as the routing algorithm constructs and discards
  362.    candidate paths leading to these routes, the factor computations
  363.    should have the following properties:
  364.  
  365.    1.  All factors should be positive, monotone functions which increase
  366.        in value as system performance degrades from optimum.
  367.  
  368.    2.  The criteria used to estimate link factors should be symmetric;
  369.        that is, their values should not depend on the particular
  370.        direction the link is used.
  371.  
  372.    3.  The criteria used to estimate node factors should not depend on
  373.        the particular links that traffic enters or leaves the node.
  374.  
  375.    Each factor is associated with a weight assignment which reflects the
  376.    contribution of the factor in the distance calculation, with larger
  377.    weights indicating greater importance.  For comparison with other
  378.    common routing algorithms, as well as for effective control of the
  379.    computational resources required, it may be desirable to impose
  380.    additional restrictions on these computations, which may be a topic
  381.    for further study.  Obviously, the success of this routing algorithm
  382.    depends on cleverly (i.e.  experimentally) determined factor
  383.    computations and weight assignments.
  384.  
  385.    The particular choices used in the prototype implementation should be
  386.    considered educated first guesses that might be changed, perhaps in
  387.    dramatic ways, in later implementations.  Nevertheless, the operation
  388.    of the algorithm in finding optimum routes over all choices in factor
  389.    computations and weights is unchanged.  Recall that the wiretap
  390.    routine generates data items for each node and link heard and saves
  391.    them in the node and link tables.  These items are processed by the
  392.    routing routine to generate the factors shown below in Table 1 and
  393.    Table 2.
  394.  
  395.  
  396.  
  397.  
  398. Mills                                                           [Page 7]
  399.  
  400.  
  401.  
  402. RFC 981                                                       March 1986
  403. An Experimental Multiple-Path Routing Algorithm
  404.  
  405.  
  406.       Factor  Weight  Name            How Determined
  407.       ---------------------------------------------------------------
  408.       f0      30      hop             1 for each link
  409.       f1      50      unverified      1 if not heard either direction
  410.       f2      5       non-reciprocal  1 if not heard both directions
  411.       f3      5       unsynchronized  1 if no I or S frame heard
  412.  
  413.                          Table 1. Link Factors
  414.  
  415.       Factor  Weight  Name            How Determined
  416.       ---------------------------------------------------------------
  417.       f4      5       complexity      1 for each incident link
  418.       f5      20      digipeated      1 if station does not digipeat
  419.       f6      -       congestion      (see text)
  420.  
  421.                          Table 2. Node Factors
  422.  
  423.    With regard to link factors, the "hop" factor is assigned as one for
  424.    each link and represents the bias found in other routing algorithms
  425.    of this type.  The intent is that the routing mechanism degenerate to
  426.    minimum-hop in the absence of any other information.  The
  427.    "unverified" factor is assigned as one if the heard bit is not set
  428.    (not heard in either direction), while the "non-reciprocal" factor is
  429.    assigned as one if the reciprocal bit is not set (not heard in both
  430.    directions).  The "unsynchronized" factor is assigned as one if the
  431.    synchronized bit is not set (no I or S frames observed in either
  432.    direction).
  433.  
  434.    With regard to node factors, the "complexity" factor is computed as
  435.    the number of links incident at the node, while the "congestion"
  436.    factor is to be computed as the number of intervals in the eight
  437.    ten-second intervals preceding the time of observation in which a
  438.    frame was transmitted to or through the node.  The "digipeated"
  439.    factor is assigned as one if the node is only a source (i.e.  no
  440.    digipeated frames have been heard from it).  For the purposes of
  441.    path-distance calculations, the node factors are taken as zero for
  442.    the endpoint nodes, since their contribution to any path would be the
  443.    same.
  444.  
  445.  
  446.  
  447.  
  448.  
  449.  
  450.  
  451.  
  452.  
  453.  
  454.  
  455. Mills                                                           [Page 8]
  456.  
  457.  
  458.  
  459. RFC 981                                                       March 1986
  460. An Experimental Multiple-Path Routing Algorithm
  461.  
  462.  
  463. 6.  The Routing Routine
  464.  
  465.    The dynamic data base built by the wiretap routine is used by the
  466.    routing routine to compute routes as required.  Ordinarily, this
  467.    needs to be done only when the first frame to a new destination is
  468.    sent and at intervals thereafter, with the intervals perhaps
  469.    modulated by retry count together with congestion thresholds, etc.
  470.    The technique used is a variation of the Viterbi Algorithm [1], which
  471.    is similar to the the shortest-path-first algorithm used in the
  472.    ARPANET and elsewhere [2].  It operates by constructing a set of
  473.    candidate paths on the network graph from the destination to the
  474.    source in increasing number of hops. Construction continues until all
  475.    the complete paths satisfying a specified condition are found,
  476.    following which one with minimum distance is selected as the primary
  477.    route and the others ranked as alternate routes.
  478.  
  479.    There are a number of algorithms to determine the mimimum-distance
  480.    path on a graph between two nodes with given metric.  The prototype
  481.    implementation operates using a dynamic path list of entries derived
  482.    from the link table.  Each list entry includes (a) the NID of the
  483.    current node, (b) a pointer to the preceding node on the path and (c)
  484.    the hop count and (d) distance from the node to the final destination
  485.    node of the path:
  486.  
  487.                    [ NID, pointer, hop, distance ] .
  488.  
  489.    The algorithm starts with the list containing only the entry [
  490.    dest-NID, 0, 0, 0 ], where dest-NID is the final destination NID, and
  491.    then scans the list starting at this entry.  For each such entry it
  492.    scans the link table for all links with either to-NID or from-NID
  493.    matching NID and for each one found inserts a new entry:
  494.  
  495.          [ new-NID, new-pointer, hop + 1, distance + weight ] ,
  496.  
  497.    where the new-NID is the to-NID of the link if its from-NID matches
  498.    the old NID and the from-NID of the link otherwise.  The new-pointer
  499.    is set at the address of the old entry and the weight is computed
  500.    from the factors and weights as described previously.  The algorithm
  501.    coontinues to select succeeding entries and scan the link table until
  502.    no further entries remain to be processed, the allocated list area is
  503.    full or the maximum hop count or distance are exceeded, as explained
  504.    below.
  505.  
  506.    Note that in the Viterbi Algorithm, which operates in a similar
  507.    manner, when paths merge at a single node, all except one of the
  508.    minimum-distance paths (called survivors) are abandonded.  If only
  509.    one of the minimum-distance paths is required, Wiretap does the same;
  510.  
  511.  
  512. Mills                                                           [Page 9]
  513.  
  514.  
  515.  
  516. RFC 981                                                       March 1986
  517. An Experimental Multiple-Path Routing Algorithm
  518.  
  519.  
  520.    however, in the more general case where alternate paths are required,
  521.    all non-looping paths are potential survivors.  In order to prevent a
  522.    size explosion in the list, as well as to suppress loops, new list
  523.    entries with new-NID matching the NID of an existing entry on the
  524.    path to the final destination NID are suppressed and paths with hop
  525.    counts exceeding (currently) eight or distances exceeding 255 are
  526.    abandoned.
  527.  
  528.    If the Wiretap station NID is found in the from-NID of an entry
  529.    inserted in the list, a complete path has been found.  The algorithm
  530.    remembers the minimum distance and minimum hop count of the complete
  531.    paths found as it proceeds.  When only one of the minimum-distance
  532.    paths (primary route) is required, then for any list entry where the
  533.    distance exceeds the minimum distance or the hop count exceeds the
  534.    maximum hop count (plus one), the path is abandoned and no further
  535.    processing done for it.  When alternate routes are required the
  536.    hop-count test is used, but the minimum-distance test is not.
  537.  
  538.    The above pruning mechanisms are designed so that the the algorithm
  539.    always finds all complete paths with the minimum hop count and the
  540.    minimum hop count (plus one), which are designated the alternate
  541.    routes. The assignment of factor computations and weights is intended
  542.    to favor minimum-hop paths under most conditions, but to allow the
  543.    path length to grow by no more than one additional hop under
  544.    conditions of extreme congestion.  Thus, the minimum-distance path
  545.    (primary route) must be found among the alternate paths, usually, but
  546.    not always, one of the minimum-hop paths.
  547.  
  548.    At the completion of processing the complete paths are ranked first
  549.    by distance, then by the order of the final entry in the list, which
  550.    is in hop-count order by construction, to establish a well-defined
  551.    ordering.  The first of these paths represents the primary route,
  552.    while the remaining represent alternatives should all lower-ranked
  553.    routes fail.
  554.  
  555.    Some idea of the time and space complexity of the routing routine can
  556.    be determined from the observation that the computations for all
  557.    primary and secondary routes of the example in Appendix A with 58
  558.    nodes and 98 links requires a average of about 30 list entries, but
  559.    occasionally overflows the maximum size, currently 100 entries.  Each
  560.    step requires a scan of all the links and a search (for loops) along
  561.    the maximum path length, which in principle can add most of the links
  562.    to the list for each new hop.  Obviously, the resources required can
  563.    escalate dramatically, unless effective pruning techniques such as
  564.    the above are used.
  565.  
  566.    The prototype implementation requires 316 milliseconds on an
  567.  
  568.  
  569. Mills                                                          [Page 10]
  570.  
  571.  
  572.  
  573. RFC 981                                                       March 1986
  574. An Experimental Multiple-Path Routing Algorithm
  575.  
  576.  
  577.    LSI-11/73 to calculate the 58 primary routes to all 58 nodes for an
  578.    average of about 5.4 milliseconds per route.  The implementation
  579.    requires 1416 milliseconds to calculate the 201 combined primary and
  580.    alternate routes to all 58 nodes for an average of about 3.4
  581.    milliseconds per route.
  582.  
  583. 7.  Data Base Housekeeping
  584.  
  585.    In normal operation Wiretap tends to pick up a good deal of errors
  586.    and random junk, since it can happen that a station may call any
  587.    other station using ad-hoc heuristics and often counterproductive
  588.    strategies. The result is that Wiretap may add speculative and
  589.    erroneous links to the data base.  In practice, this happens
  590.    reasonably often as operators manually try various paths to stations
  591.    that may be shut down, busy or blocked by congestion.  Nevertheless,
  592.    since Wiretap operates entirely by passive monitoring, speculative
  593.    links may represent the principal means for discovery of new paths.
  594.  
  595.    The number of nodes and links, speculative or not, can grow without
  596.    limit as the Wiretap station continues to monitor the channel.  As
  597.    the size of the node table or link table approaches the maximum, a
  598.    garbage-collection procedure is automatically invoked.  The procedure
  599.    used in the prototype implementation was suggested by virtual-memory
  600.    storage-management techniques in which the oldest unreferenced page
  601.    is replaced when a new page frame is required.  Every link table
  602.    entry includes an age field, which is incremented once each minute if
  603.    its value is less than 60, once each hour otherwise and reset to zero
  604.    when the link is found in a monitor header.  When new space is
  605.    required in the link table, the link with the largest product of age
  606.    and distance, as determined by the factor computations and weights,
  607.    is removed first.
  608.  
  609.    Every node table entry includes the congestion factor mentioned
  610.    above, which is a count of the number of links (plus one) incident at
  611.    that node.  As links are removed from the link table, these counts
  612.    are decremented.  If the count for some node decrements to one, that
  613.    node is removed.  Thus, if new space is required in the node table,
  614.    links are removed as described above until the required space is
  615.    reclaimed.
  616.  
  617.    In addition to the above, and in order to avoid capture of the tables
  618.    by occasional speculative spasms on one hand and stagnation due to
  619.    excessively stale information on the other, if the age counter
  620.    exceeds a predetermined threshold, currently fifteen minutes for a
  621.    speculative link and 24 hours for other links, the link is removed
  622.  
  623.  
  624.  
  625.  
  626. Mills                                                          [Page 11]
  627.  
  628.  
  629.  
  630. RFC 981                                                       March 1986
  631. An Experimental Multiple-Path Routing Algorithm
  632.  
  633.  
  634.    from the data base regardless of distance.  It is expected that these
  635.    procedures will be improved as experience with the implementation
  636.    matures.
  637.  
  638. 8.  Summary and Directions for Further Development
  639.  
  640.    Wiretap represents an initial experiment and evaluation of the
  641.    effectiveness of passive monitoring in the management of the AX.25
  642.    packet-radio channel.  While the results of initial experiments have
  643.    been encouraging, considerable work needs to be done in the
  644.    optimization effectively, some experience needs to be gained in the
  645.    day-to-day operation of the prototype system during which various
  646.    combinations of weight assignments can be tried.
  647.  
  648.    The prototype implementation has been in use for about four months at
  649.    this writing;  however, a number of lessons were quickly learned. The
  650.    implementation includes a finite-state automaton to manage initial
  651.    connection requests, including the capability to retry SABM frames
  652.    along alternate routes computed by Wiretap.  A simple but effective
  653.    heuristic is used to generate speculative paths by artificially
  654.    adding links between the destination station and the Wiretap station
  655.    together with all other stations in the node table identified as
  656.    digipeaters.  The algorithm then operates as described above to
  657.    generate the primary and alternate routes.  An example of this
  658.    technique is given in the Appendix.
  659.  
  660.    This technique works very well, at least in the initial-connection
  661.    phase of virtual-circuit mode, although it requires significant
  662.    computational resources, due to the large number of possible paths
  663.    ranging from reasonable to outrageous.  In the case of datagram mode
  664.    only the primary route is computed.  The heuristic path-abandonment
  665.    strategy outlined above is a critical performance determinant in this
  666.    area.
  667.  
  668.    While there is a mechanism for the TAPR-1 processor to notify the
  669.    prototype implementation that a lower-level AX.25 virtual circuit has
  670.    failed, so that an alternate path can be tried, there is no intrinsic
  671.    mechanism to signal the failure of an upper-level TCP connection,
  672.    which uses IP datagrams wrapped in AX.25 I frames (connection mode)
  673.    or UI frames (connectionless mode).  This is a generic problem with
  674.    any end-system protocol where the peers are located physically
  675.    distant from the link-level entities.  Experience indicates the value
  676.    of providing a two-way conduit to share control information between
  677.    protocol layers may be seriously underestimated.
  678.  
  679.    The prototype implementation manages processor and storage demands in
  680.    relatively simple ways, which can result in considerable
  681.  
  682.  
  683. Mills                                                          [Page 12]
  684.  
  685.  
  686.  
  687. RFC 981                                                       March 1986
  688. An Experimental Multiple-Path Routing Algorithm
  689.  
  690.  
  691.    inefficiencies.  It is apparent that in any widely distributed
  692.    version of Wiretap these demands will have to be carefully managed.
  693.    As suggested above, effective provisions to purge old information,
  694.    especially speculative links, are vital, as well as provisions to
  695.    control the intervals between route computations, for instance as a
  696.    function of link state and traffic mode.
  697.  
  698.    The next step in the evolution towards a fully distributed routing
  699.    algorithm is the introduction of active probing techniques.  This
  700.    should considerably improve the capability to discover new paths, as
  701.    well as to fine-tune existing ones.  It should be possible to
  702.    implement an active probing mechanism while maintaining compatibility
  703.    with the passive-only Wiretap, as well as maintaining compatibilty
  704.    with other stations using no routing algorithms at all.  It does seem
  705.    that judicious use of beacons to discover and renew paths in the
  706.    absence of traffic will be required, as well as some kind of
  707.    echo/reply mechanism similar to the ICMP Echo/Reply support required
  708.    of Internet hosts.
  709.  
  710.    In order to take advantage of the flexibility provided by routing
  711.    algorithms like Wiretap, it will be necessary to revise the AX.25
  712.    specification to include "loose" source routing in addition to the
  713.    present "strict" source routing.  Strict source routing requires
  714.    every forwarding stage (callsign) to be explicitly declared, while
  715.    loose source routing would allow some or all stages to be left to the
  716.    discretion of the local routing agent or digipeater.  One suggestion
  717.    would be to devise a special collective indicator or callsign that
  718.    could signal a Wiretap digipeater to insert the computed route string
  719.    following its callsign in the AX.25 frame header.
  720.  
  721.    A particularly difficult area for any routing algorithm is in its
  722.    detection and reponse to congestion.  Some hints on how the existing
  723.    Wiretap mechanism can be improved are indicated in this document.
  724.    Additional work, especially with respect to the hidden-station
  725.    problem, is necessary.  Perhaps the most useful feature of all would
  726.    be a link-quality indication derived from the radio, modem or
  727.    frame-level procedures (checksum failures).  Conceivably, this
  728.    information could be included in beacon messages broadcast
  729.    occasionally by the digipeaters.
  730.  
  731.    It is quite likely that the most effective application of routing
  732.    algorithms in general will be at the local-area digipeater sites.
  733.    One reason for this is that these stations may have off-channel
  734.    trunking facilities that connect different areas and may exchange
  735.    wide-area routing information via these facilities.  The routing
  736.    information collected by the local-area Wiretap stations could then
  737.    be exchanged directly with the wide-area sites.
  738.  
  739.  
  740. Mills                                                          [Page 13]
  741.  
  742.  
  743.  
  744. RFC 981                                                       March 1986
  745. An Experimental Multiple-Path Routing Algorithm
  746.  
  747.  
  748. 9.  References
  749.  
  750.    [1]  Forney, G.D., Jr.  The Viterbi Algorithm.  Proc IEEE 61, 3
  751.         (March 1973), 268-278.
  752.  
  753.    [2]  McQuillan, J., I.  Richer and E.  Rosen.  An overview of the new
  754.         routing algorithm for the ARPANET.  Proc.  ACM/IEEE Sixth Data
  755.         Comm. Symp., November 1979.
  756.  
  757.    [3]  Mills, D.L.  Exterior Gateway Protocol Formal Specification.
  758.         DARPA Network Working Group Report RFC-904, M/A-COM Linkabit,
  759.         April 1984.
  760.  
  761.    [4]  Fox, T.L., (Ed.).  AX.25 amateur packet-radio link-layer
  762.         protocol, Version 2.0.  American Radio Relay League, October
  763.         1984.
  764.  
  765.  
  766.  
  767.  
  768.  
  769.  
  770.  
  771.  
  772.  
  773.  
  774.  
  775.  
  776.  
  777.  
  778.  
  779.  
  780.  
  781.  
  782.  
  783.  
  784.  
  785.  
  786.  
  787.  
  788.  
  789.  
  790.  
  791.  
  792.  
  793.  
  794.  
  795.  
  796.  
  797. Mills                                                          [Page 14]
  798.  
  799.  
  800.  
  801. RFC 981                                                       March 1986
  802. An Experimental Multiple-Path Routing Algorithm
  803.  
  804.  
  805. Appendix A.  An Example
  806.  
  807.    An example will illustrate how Wiretap constructs primary and
  808.    alternate routes given candidate node and link tables.  The candidate
  809.    tables resulted from a scenario monitoring normal traffic on the
  810.    145.01-MHz AX.25 packet-radio channel in the Washington, DC, area
  811.    during a typical 24-hour period.  The node and link tables
  812.    illustrated below give an idea of what the constructed data base
  813.    looks like, as well as provide the basis for the example.
  814.  
  815.    Figure 1 illustrates a candidate node table showing the node ID
  816.    (NID), callsign and related information for each station.  The Route
  817.    field contains the primary route (minimum-distance path), as a string
  818.    of NIDs from the origination station (NID = 0) to the destination
  819.    station shown, with the exception of the endpoint NIDs.  The absence
  820.    of a route string indicates the station is directly reachable without
  821.    the assistance of a digipeater.  Note that the originating station is
  822.    always the first entry in the node table, in this case W3HCF, and is
  823.    initialized with defaults before the algorithm is started.
  824.  
  825.       NID Callsign    Flags   Links   Last Rec    Wgt   Route
  826.       -------------------------------------------------------
  827.       0    W3HCF      005     26      15:00:19    255
  828.       1    WB4APR-5   017     18      16:10:38    30
  829.       2    DPTRID     000     3       00:00:00    210   1
  830.       3    W9BVD      005     3       23:24:33    40
  831.       4    W3IWI      015     5       16:15:30    35
  832.       5    WB4JFI-5   017     34      16:15:30    35
  833.       6    W3TMZ      015     2       01:00:49    150   1
  834.       7    WB4APR-6   017     14      14:56:06    35
  835.       8    WB4FQR-4   017     4       06:35:15    40
  836.       9    WD9ARW     015     3       14:56:04    115   11
  837.  
  838.       10   WA4TSC     015     3       15:08:53    115   11
  839.       11   WA4TSC-1   017     9       15:49:15    35
  840.       12   KJ3E       015     4       15:57:26    155   1
  841.       13   WB2RVX     017     3       09:19:46    135   7
  842.       14   AK3P       015     2       12:57:53    185   7 15
  843.       15   AK3P-5     016     4       12:57:53    135   7
  844.       16   KC2TN      017     3       04:01:17    135   7
  845.       17   WA4ZAJ     015     2       21:41:24    240   5
  846.       18   KB3DE      015     3       23:38:16    35
  847.       19   K4CG       015     3       13:29:14    35
  848.  
  849.       20   WB2MNF     015     2       04:01:17    180   7 16
  850.       21   K4NGC      015     3       14:57:44    90    8
  851.       22   K3SLV      005     2       03:40:01    160   1
  852.  
  853.  
  854. Mills                                                          [Page 15]
  855.  
  856.  
  857.  
  858. RFC 981                                                       March 1986
  859. An Experimental Multiple-Path Routing Algorithm
  860.  
  861.  
  862.       23   KA4USE-1   017     6       14:57:44    35
  863.       24   K4AF       005     3       12:46:38    40
  864.       25   WB4UNB     015     2       06:45:09    240   5
  865.       26   PK64       005     3       02:50:54    40
  866.       27   N4JOG-2    015     3       13:24:53    35
  867.       28   KX3C       015     4       02:57:29    35
  868.       29   W3CSG      015     4       06:10:17    115   11
  869.  
  870.       30   WD4SKQ     015     3       16:00:33    35
  871.       31   WA7DPK     015     3       01:28:11    35
  872.       32   N4JGQ      015     3       22:57:50    35
  873.       33   K3AEE      005     3       03:52:43    40
  874.       34   WB3ANQ     015     3       04:01:27    140   7
  875.       35   K2VPR      015     2       12:07:51    240   5
  876.       36   G4MZF      015     3       01:38:30    35
  877.       37   KA3ERW     015     2       03:11:17    155   1
  878.       38   WB3ILO     015     2       02:10:34    140   7
  879.       39   KB3FN-5    016     4       06:10:17    110   11
  880.  
  881.       40   KS3Q       015     5       15:54:57    35
  882.       41   WA3WUL     015     2       03:36:18    135   7
  883.       42   N3EGE      015     3       15:58:01    160   1
  884.       43   N4JMQ      015     2       08:02:58    185   7 13
  885.       44   K3JYD-5    016     5       15:58:01    155   1
  886.       45   KA4TMB     015     3       16:15:23    115   11
  887.       46   KC3Y       015     2       04:14:36    155   1
  888.       47   W4CTT      005     2       12:21:33    245   5
  889.  
  890.       52   K3JYD      015     2       02:16:52    155   1
  891.       54   WA5WTF     015     2       02:01:20    240   5
  892.       55   KA4USE     005     3       23:56:02    105   23
  893.       56   N3BRQ      005     2       02:00:36    40
  894.       57   KC4B       015     2       22:10:37    240   5
  895.       58   WA5ZAI     005     2       12:44:03    40
  896.       59   K4UW       005     2       02:36:05    40
  897.       60   K3RH       015     2       01:20:47    135   7
  898.       61   N4KRR      015     3       10:56:50    35
  899.       62   K4XY       015     2       04:53:16    240   5
  900.       64   WA6YBT     015     2       05:13:07    190   7 15
  901.  
  902.                      Figure 1. Candidate Node Table
  903.  
  904.    In the above table the Dist field shows the total distance of the
  905.    primary route, the Links field shows the complexity factor, which is
  906.    the number of links incident at that node (plus one), and the Last
  907.    Rec field shows the time (UT) the station was last heard, directly or
  908.    indirectly. The Flags field shows, among other things, which stations
  909.  
  910.  
  911. Mills                                                          [Page 16]
  912.  
  913.  
  914.  
  915. RFC 981                                                       March 1986
  916. An Experimental Multiple-Path Routing Algorithm
  917.  
  918.  
  919.    have originated frames and which have digipeated them.  The bits in
  920.    this field, which is in octal format, are interpeted as follows (bit
  921.    0 is the rightmost bit):
  922.  
  923.                 Bit     Function                       
  924.                 --------------------                   
  925.                 0       originating station            
  926.                 1       digipeater station             
  927.                 2       station heard (Last Rec column)
  928.                 3       station synchronized connection
  929.  
  930.    Among the 58 stations shown in Figure 1 are eleven digipeaters, all
  931.    but three of which also originate traffic.  All but twelve stations
  932.    have either originated or digipeated a synchronized connection and
  933.    only one "station" DPTRID, actually a beacon, has not been heard to
  934.    either originate or digipeat traffic.
  935.  
  936.    Figure 2 illustrates a candidate node table of 98 links showing the
  937.    from-NID, to-NID, Flags and Age information for each link as
  938.    collected. The bits in the Flags field, which is in octal format, are
  939.    interpeted as follows (bit 0 is the rightmost bit):
  940.  
  941.                           Bit     Function    
  942.                           ------------------- 
  943.                           0       source      
  944.                           1       digipeated  
  945.                           2       heard       
  946.                           3       synchronized
  947.                           4       reciprocal  
  948.  
  949.       From    To      Flags   Age            From    To      Flags   Age
  950.       ---------------------------            ---------------------------
  951.       5       0       017     0               1       0       037     5
  952.       4       0       015     0               5       4       035     0
  953.       4       1       015     28              7       0       017     60
  954.       9       5       015     60              1       5       006     56
  955.       4       7       015     60              11      0       017     24
  956.       7       15      036     62              7       13      037     60
  957.       12      1       015     71              15      14      035     62
  958.       7       16      037     70              12      5       015     71
  959.       19      0       015     61              16      20      035     70
  960.       5       11      036     60              23      0       017     60
  961.       5       24      035     73              30      0       015     71
  962.       29      11      015     69              5       29      035     73
  963.       8       21      035     67              8       5       017     67
  964.       31      0       015     72              31      5       015     72
  965.       32      0       015     74              32      5       015     69
  966.  
  967.  
  968. Mills                                                          [Page 17]
  969.  
  970.  
  971.  
  972. RFC 981                                                       March 1986
  973. An Experimental Multiple-Path Routing Algorithm
  974.  
  975.  
  976.       40      5       015     17              40      0       015     19
  977.       34      7       015     70              35      5       015     62
  978.       1       40      035     74              38      7       015     71
  979.       5       36      035     72              45      5       015     0
  980.       36      0       015     72              5       30      035     14
  981.       37      1       015     70              44      5       016     14
  982.       12      44      015     17              46      1       015     69
  983.       34      1       015     72              44      1       016     70
  984.       5       23      036     60              9       11      015     79
  985.       10      11      015     60              1       6       035     72
  986.       27      5       015     61              11      1       006     83
  987.       45      11      015     76              52      1       015     71
  988.  
  989.       5       2       000     14              8       0       005     76
  990.       57      5       015     75              17      5       015     75
  991.       3       0       005     74              3       5       005     74
  992.       26      5       005     71              26      0       005     74
  993.       18      5       015     74              18      0       015     74
  994.       55      5       005     73              24      0       005     62
  995.       61      0       015     63              55      23      005     73
  996.       54      5       015     71              61      5       015     63
  997.       59      0       005     71              56      0       005     71
  998.       5       7       006     71              7       60      035     72
  999.       28      0       015     71              62      5       015     69
  1000.       1       7       036     70              28      5       015     71
  1001.       7       41      035     70              28      1       015     71
  1002.       58      0       005     62              1       22      005     70
  1003.       33      7       005     70              33      0       005     70
  1004.       64      15      015     69              25      5       015     67
  1005.       39      10      035     68              11      39      036     68
  1006.       43      13      015     65              29      39      015     68
  1007.       40      7       015     62              47      5       005     62
  1008.       19      23      015     61              27      0       015     61
  1009.       42      1       005     23              23      21      035     60
  1010.       1       2       000     5               42      44      015     14
  1011.  
  1012.                      Figure 2. Candidate Link Table
  1013.  
  1014.    The following tables illustrate the operation of the routing
  1015.    algorithm in several typical scenarios.  Each line in the table
  1016.    represents the step where an entry is extracted from the path list
  1017.    and new entries are determined.  The "Step" column indexes each step,
  1018.    while the "To" column indicates the NID of the station at that step.
  1019.    The "Ptr" column is the index of the preceeding step along the path
  1020.    to the destination, while the "Hop" and "Dist" columns represent the
  1021.    total hop count and computed distance along that path.
  1022.  
  1023.  
  1024.  
  1025. Mills                                                          [Page 18]
  1026.  
  1027.  
  1028.  
  1029. RFC 981                                                       March 1986
  1030. An Experimental Multiple-Path Routing Algorithm
  1031.  
  1032.  
  1033.    Following is a fairly typical example where the destination station
  1034.    is not directly reachable, but several multiple-hop paths exist via
  1035.    various digipeaters.  The algorithm finds four digipeaters:  1, 5, 11
  1036.    and 39, all but the last of which are directly reachable from the
  1037.    originating station, to generate two routes of two hops and two of
  1038.    three hops, as shown below.  Note that only the steps leading to
  1039.    complete paths are shown.
  1040.  
  1041.       Destination: 29  Station: W3CSG
  1042.       Step    NID     Ptr     Hop     Dist    Comments
  1043.       -------------------------------------------------------------
  1044.       0       29      0       0       0
  1045.       1       5       0       1       30
  1046.       2       11      0       1       35
  1047.       3       39      0       1       35
  1048.       4       0       1       2       235     Complete path: 0 5 29
  1049.       35      0       2       2       115     Complete path: 0 11 29
  1050.       37      9       2       2       115
  1051.       38      10      2       2       115
  1052.       39      1       2       2       120
  1053.       40      45      2       2       115
  1054.       41      39      2       2       110
  1055.       42      11      3       2       85
  1056.       43      10      3       2       85
  1057.       46      0       39      3       240     Complete path: 0 1 11 29
  1058.       63      0       42      3       165     Complete path: 0 11 39 29
  1059.  
  1060.    The algorithm ranks these routes first by distance and then by order
  1061.    in the list, so that the two-hop route at N = 35 would be chosen
  1062.    first, followed by the three-hop route at N = 63, the two-hop route
  1063.    at N = 4 and, finally the three-hop route at N = 46.  The reason why
  1064.    the second choice is a three-hop route and the third a two-hop route
  1065.    is because of the extreme congestion at the digipeater station 5,
  1066.    which has 34 incident links.
  1067.  
  1068.    Following is an example showing how the path-pruning mechanisms
  1069.    operate to limit the scope of exploration to those paths most likely
  1070.    to lead to useful routes.  The algorithm finds one two-hop route and
  1071.    four three-hop routes.  In this example the complete list is shown,
  1072.    including all the steps which are abandond for the reasons given.
  1073.  
  1074.  
  1075.  
  1076.  
  1077.  
  1078.  
  1079.  
  1080.  
  1081.  
  1082. Mills                                                          [Page 19]
  1083.  
  1084.  
  1085.  
  1086. RFC 981                                                       March 1986
  1087. An Experimental Multiple-Path Routing Algorithm
  1088.  
  1089.  
  1090.       Destination: 13  Station: WB2RVX
  1091.       Step    NID     Ptr     Hop     Dist    Comments
  1092.       -------------------------------------------------------------
  1093.       0       13      0       0       0
  1094.       1       7       0       1       30
  1095.       2       43      0       1       35      No path
  1096.       3       0       1       2       135     Complete path: 0 7 13
  1097.       4       4       1       2       135
  1098.       5       15      1       2       130
  1099.       6       16      1       2       130
  1100.       7       34      1       2       135
  1101.       8       38      1       2       135     No path
  1102.       9       60      1       2       130     No path
  1103.  
  1104.       10      5       1       2       140     Max distance 310
  1105.       11      1       1       2       130
  1106.       12      41      1       2       130     No path
  1107.       13      33      1       2       140
  1108.       14      40      1       2       135
  1109.       15      5       4       3       210     Max distance 380
  1110.       16      0       4       3       215     Complete path: 0 4 7 13
  1111.       17      1       4       3       215     Max distance 305
  1112.       18      14      5       3       180     Max hops 4
  1113.       19      64      5       3       185     Max hops 4
  1114.  
  1115.       20      20      6       3       175     Max hops 4
  1116.       21      1       7       3       205     Max distance 295
  1117.       22      0       11      3       250     Complete path: 0 1 7 13
  1118.       23      4       11      3       255     Max distance 300
  1119.       24      12      11      3       255     Max distance 295
  1120.       25      40      11      3       250     Max distance 295
  1121.       26      37      11      3       255     Max distance 285
  1122.       27      46      11      3       255     Max distance 285
  1123.       28      44      11      3       255     Max distance 280
  1124.       29      34      11      3       255     Max distance 290
  1125.  
  1126.       30      6       11      3       250     Max distance 280
  1127.       31      52      11      3       255     Max distance 285
  1128.       32      28      11      3       255     Max distance 295
  1129.       33      0       13      3       215     Complete path: 0 33 7 13
  1130.       34      0       14      3       215     Complete path: 0 40 7 13
  1131.       35      5       14      3       215     Max distance 385
  1132.       36      1       14      3       210     Max distance 300
  1133.  
  1134.    The steps labelled "No path" are abandonded because no links could be
  1135.    found satisfying the constraints:  (a) to-NID or from-NID matching
  1136.    the NID of the step, (b) loop-free or (c) total path distance less
  1137.  
  1138.  
  1139. Mills                                                          [Page 20]
  1140.  
  1141.  
  1142.  
  1143. RFC 981                                                       March 1986
  1144. An Experimental Multiple-Path Routing Algorithm
  1145.  
  1146.  
  1147.    than 256.  The steps labelled "Max distance" are abandonded because
  1148.    the total distance, computed as the sum of the Dist value plus the
  1149.    weighted node factors, would exceed 256 as shown.  The steps labelled
  1150.    "Max hops" are abandonded because the total hop count would exceed
  1151.    the minimum hop count (plus one) as shown.
  1152.  
  1153.    Although this example shows the computations for all alternate
  1154.    routes, if only the primary route is required all steps with total
  1155.    distance greater than the minimum-distance (135) can be abandonded.
  1156.    In this particular case path exploration terminates after only 14
  1157.    steps.
  1158.  
  1159.    The following example shows a typical scenario involving a previously
  1160.    unknown station;  that is, one not already in the data base. Although
  1161.    not strictly part of the algorithm itself, the strategy in the
  1162.    present system is to generate speculative paths consisting of an
  1163.    imputed direct link between the originating station and the
  1164.    destination station, together with imputed direct links between each
  1165.    digipeater in the data base and the destination station.  The new
  1166.    links created will time out according to the cache-management
  1167.    mechanism in about fifteen minutes.
  1168.  
  1169.    In the following example the destination station is 74, which results
  1170.    in the following additions to the link table:
  1171.  
  1172.       fm-NID  To-NID  Flags   Node Type
  1173.       ----------------------------------
  1174.       0       74      000     Originator
  1175.       1       74      000     Digipeater
  1176.       5       74      000     Digipeater
  1177.       7       74      000     Digipeater
  1178.       8       74      000     Digipeater
  1179.       11      74      000     Digipeater
  1180.       13      74      000     Digipeater
  1181.       15      74      000     Digipeater
  1182.       16      74      000     Digipeater
  1183.       23      74      000     Digipeater
  1184.       39      74      000     Digipeater
  1185.       44      74      000     Digipeater
  1186.  
  1187.    There are eleven digipeaters involved, not all of which may be used.
  1188.    The resulting primary route and five alternate routes are shown
  1189.    below.  Note that only five of the eleven digipeaters are used.  The
  1190.    remainder were either too far away or too heavily congested.  Note
  1191.    that only the list entries leading to complete paths are shown.
  1192.  
  1193.  
  1194.  
  1195.  
  1196. Mills                                                          [Page 21]
  1197.  
  1198.  
  1199.  
  1200. RFC 981                                                       March 1986
  1201. An Experimental Multiple-Path Routing Algorithm
  1202.  
  1203.  
  1204.       Destination: 74  Station: CQ
  1205.       Step    NID     Ptr     Hop     Dist    Comments
  1206.       -------------------------------------------------------------
  1207.       0       74      0       0       0
  1208.       1       0       0       1       90      Complete path: 0 74
  1209.       2       1       0       1       90
  1210.       4       7       0       1       90
  1211.       5       8       0       1       90
  1212.       6       11      0       1       90
  1213.       7       13      0       1       90
  1214.       8       15      0       1       90
  1215.       9       16      0       1       90
  1216.       10      23      0       1       90
  1217.       11      39      0       1       90
  1218.       12      44      0       1       90
  1219.       13      0       2       2       210     Complete path: 0 1 74
  1220.       29      0       4       2       195     Complete path: 0 7 74
  1221.       44      0       5       2       150     Complete path: 0 8 74
  1222.       45      0       6       2       170     Complete path: 0 11 74
  1223.       60      0       10      2       155     Complete path: 0 23 74
  1224.  
  1225.  
  1226.  
  1227.  
  1228.  
  1229.  
  1230.  
  1231.  
  1232.  
  1233.  
  1234.  
  1235.  
  1236.  
  1237.  
  1238.  
  1239.  
  1240.  
  1241.  
  1242.  
  1243.  
  1244.  
  1245.  
  1246.  
  1247.  
  1248.  
  1249.  
  1250.  
  1251.  
  1252.  
  1253. Mills                                                          [Page 22]
  1254.  
  1255.